package Classes;

import java.util.*;
import java.io.*;
import java.net.URL;

/**
 * Classe para salvar os dados de Usuario em um aquivo.
 * 
 * @author Daniela Costa
 */
public class ArquivoBD {

    private static final String DIRETORIO = "usuarios.bin";

    /**
     * Metodo que le usuarios do arquivo.
     * 
     * @return
     *          Uma lista de Usuarios.
     * @throws Exception 
     */
    public static List<Usuario> carregaUsuarios() throws Exception { 
        URL location = ArquivoBD.class.getProtectionDomain().getCodeSource().getLocation();
        try(ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(location.getFile() + DIRETORIO)))) {
            return (List<Usuario>) ois.readObject(); 
        } catch(Exception e) {
            salvaUsuarios(new ArrayList<Usuario>());
            return carregaUsuarios();
        }
    }
    
    /**
     * Metodo que salva os usuarios cadastrados em um arquivo.
     * 
     * @param usuarios
     *          Os usuarios lidos.
     * @throws IOException 
     */
    public static void salvaUsuarios(List<Usuario> usuarios)
            throws IOException {
        URL location = ArquivoBD.class.getProtectionDomain().getCodeSource().getLocation();
        try(ObjectOutputStream oos = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(location.getFile() + DIRETORIO)))) {
            oos.writeObject(usuarios);
        } 
    }    
    
}